package com.lanou3g.hw0411.login;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * Created by dllo on 18/4/11.
 */
public class Util {

    /**
     * 登录
     *
     * @param user 传过来的用户信息,里面存着用户名和密码
     * @return登陆成功 返回true 登录失败 返回false
     */
    ArrayList<User> arrayList = new ArrayList<>();

    public boolean login(ArrayList user) {
        //登录
        if (user == null) {
            System.out.println("您没有注册,请先注册");
            System.out.println();
            return false;
        }

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        // boolean usernameRight = username.equals(user.getUsername());
        System.out.println("请输入密码");
        String pwd = scanner.nextLine();
        for (int i = 0; i < arrayList.size(); i++) {
            if (username.equals(arrayList.get(i).getUsername()) && pwd.equals(arrayList.get(i).getPwd())) {
                return true;
            } else {
                return false;
            }
        }
        return true;
    }


    /**
     * 注册方法
     *
     * @return 注册完成后 把用户名密码存到User中 返回
     */
    public ArrayList<User> register() {
        //注册
        //创建一个user对象 是为了存储 用户名和密码
        User user = new User();
        Scanner scanner = new Scanner(System.in);
        //1.拿到用户名
        while (true) {
            System.out.println("请输入用户名");
            String username = scanner.nextLine();
            boolean isStartWithNum = false;
            for (int i = 0; i < 10; i++) {
                String num = String.valueOf(i);
                if (username.startsWith(num)) {
                    //如果以任何一个数字开头
                    //isStartWithNum 就会变成true
                    isStartWithNum = true;
                    System.out.println("用户名错误");
                }
            }
            if (!isStartWithNum) {
                //用户输入正确,不需要再输入了
                //1.1把用户名 存在 user对象中
                user.setUsername(username);
                break;
            }
        }

        //2.拿到密码
        String pwd = null;
        while (true) {
            System.out.println("请输入密码");
            pwd = scanner.nextLine();

            //是否包含数字
            boolean hasNum = false;
            for (int i = 0; i < 10; i++) {
                String num = String.valueOf(i);
                if (pwd.contains(num)) {
                    hasNum = true;
                }
            }
            if (!hasNum) {
                //没有数字
                System.out.println("密码需要包含数字");
                continue;//跳出当次for循环,开始while循环
            }

            //小写字母
            boolean hasLowerCase = false;
            for (char c = 'a'; c <= 'z'; c++) {
                String letter = String.valueOf(c);
                if (pwd.contains(letter)) {
                    hasLowerCase = true;
                }
            }
            if (!hasLowerCase) {
                System.out.println("密码需要包含小写字母");
                continue;
            }

            //大写字母
            boolean hasUpperCase = false;
            for (char c = 'A'; c <= 'Z'; c++) {
                String letter = String.valueOf(c);
                if (pwd.contains(letter)) {
                    hasUpperCase = true;
                }
            }
            if (!hasUpperCase) {
                System.out.println("密码需要大写字母");
                continue;
            }


            //如果代码能执行到这一句
            //证明用户输入的密码完全没有问题可以跳出循环去确认密码了
            break;
        }

        //3.拿到确认密码
        while (true) {
            System.out.println("再次输入密码:");
            String rePwd = scanner.nextLine();
            if (pwd.equals(rePwd)) {
                //确认密码和密码一样
                //3.1把密码保存到user中
                user.setPwd(pwd);
                System.out.println("注册成功");
                break;
            } else {
                System.out.println("密码和确认密码不一致");
            }
        }


        //经过一系列操作后 把存储着用户和密码的对象返回
        arrayList.add(user);
        return arrayList;
    }
}